U.S. Pat. No. 6,286,026, for a “Method and Apparatus for Integrating Pull and Push Tasks in Pipeline Data Processing,” by D. L. Venable et al. (Sep. 4, 2001), hereby incorporated by reference in its entirety, teaches a device and method for processing data with a data processing string having push type and pull type tasks.
In a chunk-based image processing pipeline there needs to be a system to process each chunk of data by each processing step in an efficient manner. This system needs to control the flow of the chunks as well as the order of execution of the processing steps.
A threaded scheduler, as disclosed herein, breaks up an image processing pipeline into a collection of traces, which are a sequence of processing steps or “engines”. This collection of traces is processed by one or more threads as each trace's “engines” become scheduled for execution. At the execution of each “engine”, data chunks are taken from upstream “engines” and processed by the “engine”. Resulting data chunks are then passed to downstream “engines”. This taking/passing of chunks may schedule or block the execution of additional “engines” based on the arrival of data or the triggering of limits on links between “engines.”
The Engines platform provides many powerful image processing operations in a very modular and dataflow neutral system. Although the dataflow neutral aspect is powerful, by providing integration with various dataflows, it poses a problem if one doesn't have a dataflow. The disclosed system and method fills this void by providing a compact and efficient dataflow for use with the Engines platform.
One of the disclosed embodiments processes data in chunks and supports any type of data that Engine does, including such types as compressed data. It also supports the efficient buffer management of Engines by allowing chunks to migrate down a pipeline, reducing the need for copies and re-buffering of data. The disclosed embodiments can handle simple linear pipelines to more complex pipelines, described with Directed Acyclic Graphs or DAGs, with multiple branches and joins. In accordance with the embodiment, a DAG my be made dynamically or on the fly using calls to add nodes and lines or the DAG may be saved and loaded using an extensible markup language (XML) based description. The embodiment disclosed below also supports the concept of DAGs within DAGs, by providing the ability to encapsulate a sub-DAG within a node of a larger DAG. This powerful feature allows for “code reuse” at the DAG level by having a useful DAG reused in a larger operation.
Disclosed in embodiments herein is a method for processing image data, comprising: defining a multi-trace directed acyclic graph, including breaking a directed acyclic graph for processing image data into a plurality of traces, wherein each trace is a fragment of the directed acyclic graph; and executing the multi-trace directed acyclic graph wherein each trace is executed in a separate thread.
Also disclosed in embodiments herein is a system for processing image data in a networked computing environment, comprising: an image data source; a host system, connected to said image data source via the network, wherein said host system includes an image processing pipeline, said pipeline operating on chunks of image data from said source; and memory for storing said chunks of image data during and upon completion of the data by the pipeline.
Disclosed in a further embodiment herein is an image processing pipeline, comprising: a client layer; an dataflow layer, said dataflow layer including at least one interface and service to describe, run, and feed the image-processing pipeline; and an Engine layer, wherein said dataflow layer controls the operation of at least one node in said Engine layer.